git-annex (10.20250116) UNRELEASED; urgency=medium
* Support help.autocorrect settings "prompt", "never", and "immediate".
+ * Allow setting remote.foo.annex-tracking-branch to a branch name
+ that contains "/", as long as it's not a remote tracking branch.
-- Joey Hess <id@joeyh.name> Mon, 20 Jan 2025 10:24:51 -0400
-- branch.
getExportCommit :: Remote -> Git.Ref -> Annex (Maybe (RemoteTrackingBranch, Sha))
getExportCommit r treeish
- | '/' `notElem` fromRef baseref = do
- let tb = mkRemoteTrackingBranch r baseref
- commitsha <- inRepo $ Git.Ref.sha $ Git.Ref.underBase refsheads baseref
- return (fmap (tb, ) commitsha)
- | otherwise = return Nothing
+ | '/' `notElem` fromRef baseref = go
+ | otherwise = ifM isremoteref
+ ( return Nothing
+ , go
+ )
where
baseref = Ref $ S8.takeWhile (/= ':') $ fromRef' $
Git.Ref.removeBase refsheads treeish
refsheads = "refs/heads"
+ isremoteref = inRepo $ Git.Ref.exists $
+ Git.Ref.underBase "refs/remotes" baseref
+ go = do
+ let tb = mkRemoteTrackingBranch r baseref
+ commitsha <- inRepo $ Git.Ref.sha $ Git.Ref.underBase refsheads baseref
+ return (fmap (tb, ) commitsha)
-- | Changes what's exported to the remote. Does not upload any new
-- files, but does delete and rename files already exported to the remote.
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
git-annex is amazing, thank you! 🤩
+
+> [[fixed|done]] --[[Joey]]
--- /dev/null
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 1"""
+ date="2025-01-20T15:13:05Z"
+ content="""
+The difficulty here is that it needs to come up with the name of a
+corresponding remote tracking branch to update. It could use
+"myexport/synced/main" for that. But, setting `annex-tracking-branch` to
+a remote ref like "origin/main" is not supported, and it would not be good
+if it allowed it and used a tracking branch with a name like
+"myexport/origin/main".
+
+And well, we know that "synced/main" is not a remote ref, but "$foo/main"
+generally may or may not be one.
+
+So, I think to support this, it would have only allow using "$foo/main"
+when the ref "refs/remotes/$foo/main" does not exist. I've implemented
+that.
+"""]]